/**
 * Author: yixuan
 * Desc: 文件上传功能封装
 * Time: 2016/6/17 20:09
 */
$(function () {
    // 存储上传成功的图片数据(API上传或调用拉取时返回的数据)
    var uploadSuccessImgs = []

    var uploadTimestamp = 0
    var dropUploadModal = null
    var webuploaderModel = null
    var uploadAccept = null
    var boundDropHandler = null


    // 超出文本长度时截取指定长度的字符串内容
    function sliceOverflowString(inputString, maxLength = 15) {
        if (inputString.length <= maxLength) {
            // 如果字符串长度小于等于指定长度，则直接返回原字符串
            return inputString;
        } else {
            // 如果字符串长度大于指定长度，则丢弃左侧超出的部分，保留末尾指定长度的子字符串
            const startIndex = inputString.length - maxLength;
            return inputString.slice(startIndex);
        }
    }

    // 拖拽释放时执行文件上传功能
    function dropHandler(e, uploadAccept, webuploaderModel) {
        e.preventDefault();
        e.stopPropagation();

        var files = e.dataTransfer.files
        for (var i = 0; i < files.length; i++) {
            // 判断当前上传的文件类型与当前点击的模态框是否一致，只有是当前模态框的文件类型才能上传
            if (isAllowUploadExtension(uploadAccept, files[i])) {
                webuploaderModel.addFile(files[i])
            } else {
                var msg = "当前上传第" + i + "个文件名：" + files[i].name + ', 上传类型为: ' + files[i].type + ', 不允许忽略上传！'
                console.error(msg)
            }
        }
    }

// 定义一个包装函数，用于绑定事件时调用 dropHandler，并传入自定义参数
    function bindDropHandlerWithParam(uploadAccept, webuploaderModel) {
        // 返回一个新的函数，该函数在调用时会调用 dropHandler 并传入参数
        return function (e) {
            dropHandler(e, uploadAccept, webuploaderModel);
        };
    }

    /**
     * *************************************************************
     * desc: 全局声明上传对象实例变量（创建时赋值，销毁时清空值）
     * *************************************************************
     */
    var uploader = null
    imgUpload({
        inputId: 'file', //input框id
        imgBox: 'imgBox', //图片容器id
        buttonId: 'btn', //提交按钮id
        upUrl: '',  //提交地址
        data: 'file1' //参数名
    })

    // 渲染选择图片或视频或音频的按钮内容
    function renderUpload(renderType, elementId) {
        var renderTypeDesc = '';
        switch (renderType) {
            case 'image':
                renderTypeDesc = '图片'
                break;
            case 'video':
                renderTypeDesc = '视频'
                break;
            case 'voice':
                renderTypeDesc = '音频'
                break;
            default:
                renderTypeDesc = ''
        }
        var btnString = '<div class="input-group">' +
            '    <input type="text" class="form-control" aria-label="Text input with multiple buttons">' +
            '    <div class="input-group-btn">' +
            '        <button data-type="' + renderType + '" type="button" class="btn btn-default">' + renderTypeDesc + '</button>' +
            '    </div>' +
            '</div>'
        $(elementId).append(btnString)
    }

    renderUpload('#upfile');


    /**
     * 根据当前上传类型，返回webuploader上传文件允许的格式
     * @param operateType
     * @returns {{extensions: string, mimeTypes: string, title: string}}
     */
    function getUploadAccept(operateType = '') {
        if (operateType == '图片') {
            return {
                title: '图片',
                extensions: 'gif,jpg,jpeg,bmp,png',
                mimeTypes: 'image/*'
            }
        } else if (operateType == '音频') {
            return {
                title: '音频',
                extensions: 'mp3',
                mimeTypes: 'audio/mpeg'
            }
        } else if (operateType == '视频') {
            return {
                title: '视频',
                extensions: 'mp4',
                mimeTypes: 'video/mp4'
            }
        }
    }

    /**
     * 根据不同类型返回不同类型对应的页面元素以及样式，主要用于遍历AJAX数据返回值回显到模态框中
     * @param operateType
     * @param imgUrl
     */
    function getElementByOperateType(operateType, item) {
        var oriTitle = item.title
        item.title = sliceOverflowString(item.title)

        if (operateType == '图片') {
            var item = `
                <div   className="file-item thumbnail" class="col-xs-6 col-md-3">
                <a href="#" class="thumbnail" title="${oriTitle}" data-id="${item.id}"> 
                    <i class="fa fa-check-square" aria-hidden="true"></i> 
                    <img src="${item.url}"  style=" display: block;">
                    <p class="upload-box-title">${item.title}</p>
                </a>
                </div>`;
        } else if (operateType == '音频' || operateType == '视频') {
            // 先将上传图片的队列插入到图片列表的最前面
            var coverBackgroundImg = {
                'video': '<i style="font-size: 60px;" class="fa fa-play-circle" aria-hidden="true"></i>',
                'audio': '<i style="font-size: 60px;" aria-hidden="true" class="fa fa-file-audio-o" aria-hidden="true"></i>'
            }

            var coverFlag = operateType == '音频' ? 'audio' : 'video'

            var item = `
                    <div className="file-item thumbnail" class="col-xs-6 col-md-3">
                        <a title="${oriTitle}" href="#" class="thumbnail" data-id="${item.id}" style=" display: flex; justify-content: center; align-items: center; flex-direction: column" data-url="${item.url}"> 
                            <i class="fa fa-check-square" aria-hidden="true"></i>
                            <p class="media-content">
                                ${coverBackgroundImg[coverFlag]}
                            </p>
                            <p class="media-title">${item.title}</p>
                         </a>
                    </div>
                `;
        }
        return item
    }

    /**
     * *************************************************************
     * desc: 绑定bootstrap模态框中的确认按钮
     * *************************************************************
     */
    $("#confirmSelected").click(function () {
        var currentBtn = $('#uploadModal').data('currentBtn');
        var isMultiple = $("#uploadModal").data('isMultiple')
        var selectedImg = $("#content-wrap").find('a.selected')

        // 判断当前操作类型属于哪一种类型(音频、视频、图片)
        var operateType = $("#uploadModal").data('operateType')

        var isRichText = $("#uploadModal").data('isRichText')

        if (isRichText) {
            if (operateType == '图片') {
                // 获取所有被点击图片的SRC属性
                var imgSrcList = $(selectedImg).find('img')
                var imgArray = []
                if (imgSrcList.length > 0) {
                    $(imgSrcList).each(function () {
                        var imgSrcLink = $(this).attr('src')
                        imgArray.push(imgSrcLink)
                    })
                }
                handleSelectedImages(imgArray)
            } else if (operateType == '视频') {
                var linkUrl = $(selectedImg).data('url')
                showCustomVideoUploader(linkUrl)
            }
        } else {
            if (operateType == '图片') {
                if (isMultiple) { // 多选则遍历追回即可
                    var imgSrcList = $(selectedImg).find('img')

                    // 获取当前多选表单的name属性
                    var filedName = $(currentBtn).parent().prev().data('name')
                    if (imgSrcList.length > 0) {

                        $(imgSrcList).each(function () {
                            var imgSrcLink = $(this).attr('src')
                            // 插入数据到模板元素中$().appendTo()
                            $(currentBtn).parent().parent().next('.select-wrapper').append(`
                          <div class="selected-batch">
                            <input type="hidden"  name="${filedName}[]"  value="${imgSrcLink}" class="form-control" aria-label="$btnDesc">
                          
                            <i class="fa fa-times" aria-hidden="true" onclick="deleteImage(this)"></i>
                            <img class="img-thumbnail" style="max-width: 150px; max-height: 150px;" src="${imgSrcLink}" alt="" />
                        </div>
                    `)
                        })
                    }
                } else { // 单选则直接赋值(或覆盖掉原有的值)
                    var imgSrc = $(selectedImg).find('img').attr('src')
                    var res = $(currentBtn).parent().parent().next().find('.img-thumbnail').attr("src", imgSrc)
                    $(currentBtn).parent().prev('input').val(imgSrc);
                }
            } else if (operateType == '音频') {
                var resourceURL = $(selectedImg).data('url')
                $(currentBtn).parent().prev('input').val(resourceURL);
            } else if (operateType == '视频') {
                var resourceURL = $(selectedImg).data('url')
                $(currentBtn).parent().prev('input').val(resourceURL);
            }
        }


        // 关闭模态框
        $('#uploadModal').modal('hide')
    })

    /**
     * *************************************************************
     * desc: 监听bootstrap模态框弹出时的触发行为
     * *************************************************************
     */
    $('#uploadModal').on('shown.bs.modal', function (event) {
        // $("#content-wrap").html(`<div class="loading"><div class="sp sp-circle"></div><h5>数据加载中...</h5></div>`)
        $("#deleteSelected").prop('disabled', true)
        $("#confirmSelected").prop('disabled', true)

        // 通过事件的 relatedTarget 属性进行访问类型是图片，音频还是视频用于显示模态框标题
        var relatedTarget = $(event.relatedTarget);
        var operateType = relatedTarget.data('operate-type')

        if (!operateType) { // 非表单点击弹出操作项(此处主要是富文本)
            operateType = $("#uploadModal").attr('operate-type')
            $(this).data('isRichText', true);
            if (operateType == '视频') {
                // 富文本视频允许单选择
                $(this).data('isMultiple', false)
            } else {
                // 富文本图片允许多选择
                $(this).data('isMultiple', true)
            }
        } else { // 表单弹出操作项
            var isMultiple = relatedTarget.data('is-multiple');
            $(this).data('isMultiple', isMultiple)
            $(this).data('isRichText', false);
        }

        // 根据参数:type查询当前活动的数据 1为图片 2为音频 3为视频
        var type = 0;
        var typeObj = {
            1: "图片",
            2: "音频",
            3: "视频"
        }
        type = Object.keys(typeObj).find(key => typeObj[key] === operateType)

        $("#modelTitle").attr('data-is-multiple', isMultiple)
        // 为当前点击的按钮事件绑定一个关联对象，即表示当前点击的属于哪一个按钮
        $(this).data('currentBtn', relatedTarget);
        $(this).data('operateType', operateType)

        // 发送AJAX请求数据(当前活动关联的图片数据)
        $.ajax({
            type: 'GET',
            dataType: "json",
            data: '',
            url: 'index.php?c=site&a=entry&do=attachment&op=display&type=' + type + '&m=' + m + '&themeid=' + themeid,
            success: function (data) {
                if (!data.total) {
                    $("#content-wrap").html(`<div class="loading"><div class="sp"></div><h5>暂无数据</h5></div>`)
                    return false;
                }
                var elementString = ''
                for (var i = 0; i < data.data.length; i++) {
                    elementString += getElementByOperateType(operateType, data.data[i])
                }
                $("#content-wrap").html(elementString)

                // 处理分页展示逻辑
                if (data.total_page > 1) {
                    // 展示分页列表
                    $("#pagination").css("display", "block")

                    //显示分页
                    layui.use(['laypage'], function () {
                        var laypage = layui.laypage;
                        laypage.render({
                            elem: 'pagination'
                            , count: data.total
                            , limit: data.per_page
                            , curr: data.current_page || 1
                            , theme: '#428bca'
                            , pages: data.total_page
                            , first: '首页'
                            , last: '尾页'
                            , skip: true,
                            jump: function (obj, first) {
                                if (!first) {
                                    var curr = obj.curr
                                    getDataByPage(curr)
                                }
                            }
                        });
                    });

                } else {
                    // 直接将分页隐藏
                    $("#pagination").css("display", "none");
                }
            }
        });


        var uploadOptions = {
            auto: true, // 选完文件后，是否自动上传
            swf: 'js/Uploader.swf', // swf文件路径
            server: '/web/index.php?c=site&a=entry&do=uploads&m=' + m + '&op=display&themeid=' + themeid, // 文件接收服务端
            pick: {
                id: '#uploadPicker',
                multiple: true
            },
            threads: 5,
            label: '上传文件',
            // method: 'get',
            // 只允许选择图片文件。
            duplicate: true,
            accept: {},
            // compress: false,
            // 图片压缩配置
            compress: {
                width: 1080,
                height: 1920,
                // 图片质量，只有type为`image/jpeg`的时候才有效。
                quality: 98,
                // 是否允许放大，如果想要生成小图的时候不失真，此选项应该设置为false.
                allowMagnify: false,
                // 是否允许裁剪。
                crop: false,
                chunked: true,
                // 是否保留头部meta信息。
                preserveHeaders: true,
                // 如果发现压缩后文件大小比原来还大，则使用原来图片
                // 此属性可能会影响图片自动纠正功能
                noCompressIfLarger: false,
                // 单位字节，如果图片大小小于此值，不会采用压缩。
                compressSize: 1024 * 1024
            }
        }

        // 设置弹窗title
        $("#modelTitle").text(operateType)
        uploadAccept = getUploadAccept(operateType)

        uploadOptions.accept = uploadAccept

        // 实例化上传对象，执行文件上传
        webuploaderModel = createSingleFileUploader(uploadOptions)

        createDragFileUploader(webuploaderModel, uploadAccept)

        // 设置上传按钮内容
        $("#uploadPicker .webuploader-pick").text("上传" + operateType)
    })


    // 分页点击获取当前页码的数据
    function getDataByPage(page) {
        $.ajax({
            type: 'GET',
            dataType: "json",
            data: '',
            url: 'index.php?c=site&a=entry&do=attachment&op=display&type=' + type + '&m=' + m + '&themeid=' + themeid + '&page=' + page,
            success: function (data) {
                var operateType = $("#uploadModal").data('operateType')

                if (data.total > 0) {
                    var elementString = ''
                    for (var i = 0; i < data.data.length; i++) {
                        elementString += getElementByOperateType(operateType, data.data[i])
                    }
                    $("#content-wrap").html(elementString)
                } else {
                    $("#content-wrap").html(`<div class="loading"><div class="sp"></div><h5>暂无数据</h5></div>`)
                }
            }

        })

    }

    /**
     * *************************************************************
     * desc: 批量删除所有选中的图片
     * *************************************************************
     */

    $("#deleteSelected").on('click', function () {
        var selectedImg = $("#content-wrap").find('a.selected')
        if (selectedImg.length == 0) {
            layer.msg('请选择要删除的图片');
            return false;
        }
        var selectedImgArr = [];
        selectedImg.each(function (index, item) {
            selectedImgArr.push($(item).data('id'))
        })
        selectedImg.each(function (index, item) {
            $(item).parent().remove()
        })


        $.ajax({
            type: 'POST',
            // dataType: "json",
            data: {
                ids: selectedImgArr,
                themeid: themeid,
                m: m,
                type: type
            },
            url: 'index.php?c=site&a=entry&do=attachment&op=del&type=' + type + '&m=' + m + '&themeid=' + themeid,
            success: function (data) {
                var res = JSON.parse(data)
                if (res.code == 1) {
                    layer.msg(res.msg);
                    // 删除成功后，删除所有selectedImg父级元素
                    selectedImg.each(function (index, item) {
                        $(item).parent().remove()
                    })
                }

            }
        });
    })

    /**
     * *************************************************************
     * desc: 监听bootstrap模态框关闭时的触发行为
     * *************************************************************
     */
    $('#uploadModal').on('hidden.bs.modal', function (e) {
        $("#deleteSelected").prop('disabled', true)
        $("#confirmSelected").prop('disabled', true)
        $("#content-wrap").html("")

        // 直接将分页隐藏
        $("#pagination").css("display", "none");

        if (uploader && typeof uploader.destroy === 'function') {
            uploader.destroy();
            uploader = null;
        } else {
            console.error('销毁上传实例失败，uploader值为NULL或destroy方法不可用');
        }
        // var boundDropHandler = bindDropHandlerWithParam(uploadAccept, webuploaderModel);
        dropUploadModal.removeEventListener('drop', boundDropHandler)
    })

    /**
     * *************************************************************
     * desc: 创建单文件上传对象实例
     * *************************************************************
     */
    function createSingleFileUploader(options = {}) {
        // 创建上传对象实例
        uploader = WebUploader.create(options);

        /**
         * *************************************************************
         * desc: callback->[uploadBeforeSend]发送前执行时间戳追加，用于api侧所需要要的参数
         * *************************************************************
         */
        uploader.on('uploadBeforeSend', function (block, data) {
            if (!uploadTimestamp) {
                uploadTimestamp = Math.floor(new Date().getTime() / 1000);
            }

            if (!data.hasOwnProperty('time')) {
                data.time = uploadTimestamp
            } else if (data.time != uploadTimestamp) {
                data.time = uploadTimestamp
            } else {
            }

        });

        /**
         * *************************************************************
         * desc: callback->[fileQueued] 单个文件上传时添加file对象到队列
         * *************************************************************
         */
        uploader.on('fileQueued', function (file) {
            // 创建缩略图
            uploader.makeThumb(file, function (error, src) {
                var $li = $('#' + file.id + ' a')
                var $img = $li.find('img')
                if (error) {
                    $img.replaceWith('<span>不能预览</span>');
                    return;
                }
                $img.attr('src', src);
            });
        })

        /**
         * *************************************************************
         * desc: callback->[filesQueued] 全部上传文件都加入到队列以后
         * *************************************************************
         */
        uploader.on('filesQueued', function (files) {
            var newFiles = []
            for (var i = 0; i < files.length; i++) {
                newFiles.unshift({
                    name: files[i].name,
                    id: files[i].id,
                    type: files[i].type,
                    size: files[i].size,
                    ext: files[i].ext,
                    source: files[i].source
                })
            }
            var $list = $("#content-wrap")

            for (var i = 0; i < newFiles.length; i++) {
                var file = newFiles[i]
                var operateType = $("#uploadModal").data('operateType')
                // 重点备注说明： 此处判断operateType == undefined是为了兼容富文本编辑器插件上传，因为富文本点击图标时未进行模态框data赋值operateType,所以此处是undefined，但此处的上传一定是图片（如果还有其他调用方式再考虑重新添加operateType='富文本')
                if (operateType == '图片') {

                    // 先将上传图片的队列插入到图片列表的最前面
                    var $li = $('<div id="' + file.id + '"  className="file-item thumbnail" class="col-xs-6 col-md-3"><a href="#" class="thumbnail"> <i class="fa fa-check-square" aria-hidden="true"></i> <img src="resource/images/nopic.jpg" data-holder-rendered="true" style=" display: block;"></a></div>');
                    $li.prependTo($list);
                } else if (operateType == '音频' || operateType == '视频') {

                    // 先将上传图片的队列插入到图片列表的最前面
                    var coverBackgroundImg = {
                        'video': '<i style="font-size: 60px;" class="fa fa-play-circle" aria-hidden="true"></i>',
                        'audio': '<i style="font-size: 60px;" aria-hidden="true" class="fa fa-file-audio-o" aria-hidden="true"></i>'
                    }
                    var coverFlag = operateType == '音频' ? 'audio' : 'video'

                    var $list = $("#content-wrap"), $li = $(`
                    <div id="${file.id}"  className="file-item thumbnail" class="col-xs-6 col-md-3">
                        <a href="#" class="thumbnail" style=" display: flex; justify-content: center; align-items: center; flex-direction: column">
                            <i class="fa fa-check-square" aria-hidden="true"></i>
                            <p class="media-content">
                                ${coverBackgroundImg[coverFlag]}
                            </p>
                            <p class="media-title">${file.name}</p>
                         </a>
                    </div>
                `);
                    $li.prependTo($list);
                }
            }

        });

        // 文件上传过程中创建进度条实时显示。
        uploader.on('uploadProgress', function (file, percentage) {
            var $li = $('#' + file.id + ' a'),
                $percent = $li.find('.progress span');
            var percentData = parseInt(percentage * 100) + '%';
            var progressString = '<div class="progress progress-item">' +
                '  <div  class="progress-bar progress-bar-striped active" role="progressbar" aria-valuenow="' + percentData + '" aria-valuemin="0" aria-valuemax="100">' +
                '    <span>' + percentData + '</span>' +
                '  </div>' +
                '</div>';
            // 避免重复创建
            if (!$percent.length) {
                $percent = $(progressString).appendTo($li).find('.progress-bar')
            } else {
                $li.find('.progress span').text(percentData)
            }
            $percent.css('width', percentData);
            $li.find('.progress-bar').css('width', percentData)
        });

        // 文件上传成功，给item添加成功class, 用样式标记上传成功。
        uploader.on('uploadSuccess', function (file, res) {
            if (!res.code) {
                $('#' + file.id + ' a').find('.progress').remove();

                $('#' + file.id).addClass('upload-fail')
                var $li = $('#' + file.id).find('a.thumbnail')
                var $error = $li.find('p.upload-error');
                // // 避免重复创建
                if (!$error.length) {
                    $error = $('<p class="upload-error"></p>').appendTo($li);
                }
                $error.text('上传失败');
                return
            }
            uploadSuccessImgs.push(res.data)
            if (file.type.indexOf('image') !== -1) {
                $('#' + file.id).find('a img').attr('src', res.data.attacment);
                $('#' + file.id).addClass('upload-state-done');
            } else if (file.type === 'audio/mpeg') {
                $('#' + file.id).find('a').attr('data-url', res.data.attacment);
                $('#' + file.id).addClass('upload-state-done');
            } else if (file.type === 'video/mp4') {
                $('#' + file.id).find('a').attr('data-url', res.data.attacment);
                $('#' + file.id).addClass('upload-state-done');
            }
            // 移除上传进度条
            setTimeout(function () {
                $('#' + file.id + ' a').find('.progress').remove();
                $('#' + file.id).find('a.thumbnail').append('<p class="upload-box-title">' + sliceOverflowString(file.name) + '</p>')
            }, 1000)
        });

        // 文件上传失败，显示上传出错
        uploader.on('uploadError', function (file) {
            $('#' + file.id + ' a').find('.progress').remove();
            var $li = $('#' + file.id).find('a.thumbnail')
            var $error = $li.find('p.upload-error');
            // // 避免重复创建
            if (!$error.length) {
                $error = $('<p class="upload-error"></p>').appendTo($li);
            }
            $error.text('上传失败');
            return
        });

        // 完成上传，成功或者失败，先删除进度条
        uploader.on('uploadComplete', function (file) {
            // $( '#'+file.id ).find('.progress').remove();
        });


        uploader.on('uploadFinished', function () {
            this.reset()
            uploadTimestamp = 0
            // 重置当前上传完成的数据
            uploadSuccessImgs = []
        })

        return uploader
    }


    /**
     * *************************************************************
     * desc: 模态框拖拽上传
     * *************************************************************
     */
    function createDragFileUploader(webuploaderModel, uploadAccept) {
        dropUploadModal = document.getElementById('uploadModal');
        dropUploadModal.addEventListener('dragover', function (e) {
            e.preventDefault();
            e.stopPropagation();
            e.dataTransfer.dropEffect = 'copy';
        });
        // 绑定事件，并保存对绑定函数的引用
        boundDropHandler = bindDropHandlerWithParam(uploadAccept, webuploaderModel);
        dropUploadModal.addEventListener('drop', boundDropHandler);
    }

    // 判断当前上传文件是否与当前打开模态框类型一致，即验证上传后缀是否正确
    function isAllowUploadExtension(uploadAccept, file) {
        if (uploadAccept.title == '图片') {
            if (file.type.indexOf('image/') !== -1) {
                return true
            } else {
                return false
            }
        } else if (uploadAccept.title == '音频' || uploadAccept.title == '视频') {
            if (uploadAccept.mimeTypes === file.type) {
                return true
            } else {
                return false
            }
        } else {
            return false
        }
    }

    /**
     * *************************************************************
     * desc: 点击图片、音频、视频选中效果增加被选中状态
     * *************************************************************
     */
    $("body").on('click', '#content-wrap div', function () {
        // 判断当前是否为上传失败的图片
        if ($(this).hasClass('upload-fail')) {
            layer.msg('上传失败的图片是无法使用的');
            return
        }

        // 判断当前是多选还是单选
        // var isMultiple = $("#modelTitle").attr('data-is-multiple')
        var isMultiple = $('#uploadModal').data('isMultiple');

        if (isMultiple === false) {
            // 清除其他所有已选状态.selected类，并为当前点击的事件添加selected类
            $(".modal-body a.thumbnail").removeClass('selected')
            $('.fa-check-square').css('display', 'none');
            $(this).find('a.thumbnail .fa-check-square').css('display', 'block')
            $(this).find('a.thumbnail').addClass('selected')
        } else {
            if ($(this).find('a.thumbnail').hasClass('selected')) {
                $(this).find('a.thumbnail').css('border', '1px solid #ddd')
                $(this).find('a.thumbnail').removeClass('selected')
                $(this).find('a.thumbnail .fa-check-square').css('display', 'none')
            } else {
                $(this).find('a.thumbnail .fa-check-square').css('display', 'block')
                $(this).find('a.thumbnail').css('border', '1px solid #428bca')
                $(this).find('a.thumbnail').addClass('selected')
            }
        }

        var selectedImgLength = $("#content-wrap").find('a.selected').length
        var isDisabled = $("#deleteSelected").prop("disabled");

        if (selectedImgLength > 0) {
            if (isDisabled) {
                $("#deleteSelected").prop('disabled', false)
                $("#confirmSelected").prop('disabled', false)
            }
        } else {
            if (!isDisabled) {
                $("#deleteSelected").prop('disabled', true)
                $("#confirmSelected").prop('disabled', true)
            }
        }

        // 如果当前没有上传成功的标识类，则表示当前上传未成功，不可以选中未上传成功后的数据
        if (!$(this).hasClass('upload-state-done')) {
            return
        }
    })
});





